package com.workflow.workflowproject.service;

import com.anwen.mongo.service.IService;
import com.workflow.workflowproject.entity.dto.TaskDataDto;
import com.workflow.workflowproject.entity.dto.TaskInfoDto;
import com.workflow.workflowproject.entity.mongoEntity.FlowValue;
import com.workflow.workflowproject.tools.Result.Result;
import org.springframework.web.bind.annotation.RequestBody;

public interface TaskService extends IService<FlowValue> {
    /**
     * 获取节点操作
     *
     * @param
     * @return
     */
    Result getOption(TaskInfoDto taskInfo) throws Exception;
    /**
     * 获取节点字段操作
     *
     * @param
     * @return
     */
    Result getFieldByNode(TaskInfoDto taskInfo) throws Exception;
    /**
     * 发起申请
     *
     * @param
     * @return
     */
    Result taskApply(TaskInfoDto taskInfo) throws Exception;
    /**
     * 数据暂存
     *
     * @param
     * @return
     */
    Result saveData(TaskInfoDto taskInfo) throws Exception;
    /**
     * 申请撤销
     *
     * @param
     * @return
     */
    Result revokeTask(TaskInfoDto taskInfo) throws Exception;

    /**
     * 通过业务ID获取数据
     *
     * @param
     * @return
     */
    Result getTaskData(String busKey) throws Exception;
    /**
     * 申请通过
     *
     * @param
     * @return
     */
    Result passTask(TaskInfoDto taskInfo) throws Exception;
    /**
     * 申请驳回
     *
     * @param
     * @return
     */
    Result rejectTask(TaskInfoDto taskInfo) throws Exception;
    /**
     * 申请驳回
     *
     * @param
     * @return
     */
    Result returnTask(TaskInfoDto taskInfo) throws Exception;
    /**
     * 流程转交
     *
     * @param
     * @return
     */
    Result passOnTask(TaskInfoDto taskInfo) throws Exception;
    /**
     * 流程委派
     *
     * @param
     * @return
     */
    Result delegateTask(TaskInfoDto taskInfo) throws Exception;

    /**
     * 委派处理
     * @param taskInfo
     * @return
     * @throws Exception
     */
    Result delegatePassTask(TaskInfoDto taskInfo) throws Exception;
    /**
     * 获取创建任务
     *
     * @param
     * @return
     */
    Result getTaskByCreateUser(TaskDataDto taskDataDto) throws Exception;
    /**
     * 获取待审批任务
     *
     * @param
     * @return
     */
    Result getTaskByAssigner(TaskDataDto taskDataDto) throws Exception;
    /**
     * 获取审批历史
     *
     * @param
     * @return
     */
    Result getHistoryTask(TaskDataDto taskDataDto) throws Exception;
}
